# 需求：打开注册A页面，完成以下操作
# 1).通过脚本执行输入用户名：admin；密码：123456；电话号码：18611111111；电子邮件：123@qq.com
# 2).间隔3秒，修改电话号码为：18600000000
# 3).间隔3秒，点击‘注册’按钮
# 4).间隔3秒，关闭浏览器
# 5).元素定位方法不限

# 导入sleep函数（从time模块直接导入，比import time更简洁，仅使用sleep功能）
from time import sleep
# 从selenium库导入webdriver模块，用于创建浏览器驱动、控制浏览器
from selenium import webdriver
# 从selenium驱动模块导入By类，用于规范元素定位方式（推荐使用，替代旧版find_element_by_*方法）
from selenium.webdriver.common.by import By

# 1. 初始化并打开Chrome浏览器
# executable_path：指定ChromeDriver驱动的本地路径（适配selenium3及以下版本）
# 驱动作用：建立Python代码与Chrome浏览器的通信通道
driver = webdriver.Chrome(executable_path='D:/chrome_driver/chromedriver.exe')
# 注释：selenium4及以上版本推荐写法（无需手动指定驱动路径，需提前安装webdriver-manager）
# driver = webdriver.Chrome() # 创建Chrome浏览器对象，后续通过该对象操作浏览器

# 2. 访问目标注册页面（注册A页面）
# get()方法：接收完整URL，让浏览器加载并显示该网页
driver.get("http://121.43.169.97:8848/pageA.html")

# 放大浏览器窗口
# maximize_window()：将窗口调整为屏幕最大尺寸，避免元素因窗口过小被隐藏，提高定位稳定性
driver.maximize_window()

# 3. 核心操作1：输入表单基础信息（用户名、密码、手机号、邮箱）
# 定位用户名输入框（通过ID定位，id="userA"，唯一性强，定位高效）
# send_keys("admin")：向输入框输入文本"admin"
driver.find_element(By.ID,"userA").send_keys("admin")

# 定位密码输入框（通过CSS_SELECTOR定位，属性选择器[name='passwordA']，匹配name属性为passwordA的元素）
# send_keys("123456")：输入密码"123456"
driver.find_element(By.CSS_SELECTOR,"[name='passwordA']").send_keys("123456")

# 定位电话号码输入框（通过CSS_SELECTOR定位，类选择器.telA，匹配class="telA"的元素）
# send_keys("18611111111")：输入初始手机号"18611111111"
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18611111111")

# 定位电子邮件输入框（通过XPATH定位，路径//p[4]/input表示第4个<p>标签下的<input>元素）
# 注：XPATH路径定位依赖页面结构，若页面结构变化会失效，建议优先使用ID/name/class定位
# send_keys("123@qq.com")：输入邮箱"123@qq.com"
driver.find_element(By.XPATH,"//p[4]/input").send_keys("123@qq.com")

# 4. 核心操作2：修改电话号码（间隔3秒后更新）
# 强制暂停3秒：等待基础信息输入完成，确保界面状态稳定
sleep(3)

# 重新定位电话号码输入框，清除原有内容（clear()方法：清空输入框中的文本）
driver.find_element(By.CSS_SELECTOR,".telA").clear()

# 注释：以下是旧版selenium的定位方法（find_element_by_css_selector），已被弃用，不推荐使用
# driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18600000000")

# 向电话号码输入框输入新号码"18600000000"（使用新版By类定位，兼容性更好）
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("18600000000")

# 5. 核心操作3：点击注册按钮（间隔3秒后执行）
# 强制暂停3秒：等待电话号码修改完成，避免点击时输入未生效
sleep(3)

# 定位注册按钮（使用新版By.CSS_SELECTOR定位，匹配页面中的<button>元素）
# 注：若页面有多个按钮，需优化定位器（如添加id/class/文本），此处假设按钮唯一
# click()：对定位到的按钮执行点击操作
driver.find_element(By.CSS_SELECTOR,"button").click()

# 6. 核心操作4：关闭浏览器（间隔3秒后执行）
# 强制暂停3秒：等待注册操作响应（如表单提交、页面跳转），避免提前关闭导致操作失败
sleep(3)

# 关闭浏览器并释放资源
# quit()：关闭所有浏览器窗口，终止驱动进程，彻底释放内存（推荐使用，区别于仅关闭当前窗口的close()）
driver.quit()